package com.sdry.utils;

import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

import com.sdry.model.llm.Menu;
import com.sdry.model.llm.Permission;

/** 
* 把资源表转换成菜单
* @author lian 
* @version 1.0
* @time 2018年10月18日 下午5:16:40
*/
public class MenuUtils {

	public static List<Menu> permission2menu(List<Permission> permissions){
		Map<Long, Menu> map = new HashMap<>();
		for(Permission p : permissions){
			//如果pid=0, 则是父级菜单
			if(p.getPid() == 0){
				Menu menu = new Menu();
				menu.setId(p.getId());
				menu.setName(p.getName());
				menu.setUrl(p.getUrl());
				menu.setType(p.getType());
				menu.setPid(p.getPid());
				menu.setSort(p.getSort());
				map.put(p.getId(), menu);
			}
		}
		
		Menu parentMenu = null;
		Menu menu = null;
		//找出子级菜单
		for(Permission p : permissions){
			if(p.getPid() > 0){
				parentMenu = map.get(p.getPid());
				menu = new Menu();
				menu.setId(p.getId());
				menu.setName(p.getName());
				menu.setUrl(p.getUrl());
				menu.setType(p.getType());
				menu.setPid(p.getPid());
				menu.setSort(p.getSort());
				
				//将二级菜单放入对应的一级菜单下
				parentMenu.getChildren().add(menu);
			}
		}
		
		//将map转为list并排序
		List<Menu> menus = new ArrayList<>();
		for(Iterator<Menu> iter = map.values().iterator(); iter.hasNext();){
			Menu m = iter.next();
			Collections.sort(m.getChildren());
			menus.add(m);
		}
		Collections.sort(menus);
		return menus;
	} 
}
